﻿
//数组相关操作
var obj = {
  /**
   * 检测字符串是否在列表里
   * @param list  被操作的数组
   * @param str
   * @returns {boolean}
   */
  constansStr (list, str) {
    return list.indexOf(str) > -1;
  },

  /**
   * 删除数组里的字符串。
   * @param list  被操作的数组，数组里需要为string
   * @param str   操作对象
   * @returns {string}
   */
  removeStr (list, str) {
    list = list.filter((o) => {
      if (o != str) {
        return o;
      }
    })
    return list;
  },

  /**
   * 检测对象是否在列表里
   * @param list  被操作的数组
   * @param obj   操作对象
   * @param key   对象比较用的主键
   * @returns {boolean}
   */
  constansObjByKey (list, obj, key) {
    var flag = false;
    list.forEach((item) => {
      if (item[key] == obj[key]) {
        flag = true;
      }
    })
    return flag;
  },
  getObjByKey (list, key, id) {
    var flag = false;
    list.forEach((item) => {
      if (item[key] == id) {
        flag = true
      }
    })
    return flag;
  },
  getByKey (list, id) {
    var flag = false;
    list.forEach((item) => {
      if (item == id) {
        flag = true
      }
    })
    return flag;
  },

  /**
   * 更新数组里的对象根据key字段。
   * 对象不在数组里，则不予处理
   * @param list  被操作的数组
   * @param obj   操作对象
   * @param key   对象比较用的主键
   * @returns {string}
   */
  updateObjByKey (list, obj, key) {
    var rsList = list.filter((item) => {
      if (item[key] == obj[key]) {
        item = obj;
      }
      return item;
    })
    return rsList;
  },

  /**
   * 插入或更新数组里的对象根据key字段。
   * 根据key去重
   * @param list  被操作的数组
   * @param obj   操作对象
   * @param key   对象比较用的主键
   * @returns {string}
   */
  insertAndUpdateObjByKey (list, obj, key) {
    var flag = true;
    var rsList = list.map((item) => {
      if (item[key] == obj[key]) {
        flag = false;
        return obj;
      }
      return item;
    })
    if (flag) {
      rsList.push(obj);
    }
    return rsList;
  },

  insertAndUpdate (list, obj, key) {
    var flag = true;
    var rsList = [];
    for (let p of list) {
      if (p[key] == obj[key]) {
        flag = false;
        continue
      } else {
        flag = false;
        rsList.push(p)
      }
    }
    if (flag) {
      rsList.push(obj);
    }
    return rsList;
  },

  /**
   * 删除数组里的对象根据key字段。
   * @param list  被操作的数组
   * @param obj   操作对象
   * @param key   对象比较用的主键
   * @returns {string}
   */
  removeObjByKey (list, obj, key) {
    var rsList = list.filter((item) => {
      if (item[key] != obj[key]) {
        return item;
      }
    })
    return rsList;
  },
}

export default obj;


